import 'package:amap_map_fluttify/amap_map_fluttify.dart';
//启示页面
import 'package:flutter/material.dart';
import 'package:test_xzkdemo/utils/common/global.dart'; 
// import 'package:decorated_flutter/decorated_flutter.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:test_xzkdemo/utils/common/global.dart';



//列表页面示例
class XinshiMap2Page extends StatefulWidget {
//  MyListPage({Key key}) : super(key: key);

  @override
  _XinshiMap2PageState createState() => new _XinshiMap2PageState();
}

class _XinshiMap2PageState extends State<XinshiMap2Page>{

/// !!使用真机调试!!
/// !注意: 只要是返回Future的方法, 一律使用`await`修饰, 确保当前方法执行完成后再执行下一行, 在不能使用`await`修饰的环境下, 在`then`方法中执行下一步.
/// 
/// 初始化(0.17.0开始可以不用配置AndroidManifest.xml):
// await AmapService.init(iosKey: '7a04506d15fdb7585707f7091d715ef4', androidKey: '7c9daac55e90a439f7b4304b465297fa');
/// 如果你觉得引擎的日志太多, 可以关闭Fluttify引擎的日志
// await enableFluttifyLog(false); // 关闭log

  AmapController _controller;

@override
  void initState() {
    super.initState(); 
  }
  @override
  Widget build(BuildContext context) {
 
    return new Scaffold(
      appBar: AppBar(
        title:Text("地图插件使用"),
      ),
      body: Container(
        //G 是空的，会崩溃
        width: G.screenWidth(context),
        height: G.screenHeight(context),
         child: buildMap(context),
      ), //内部开始使用基本组件类型
    );
  }


 Widget buildMap(BuildContext context) {
     return AmapView(
      // 地图类型 (可选)
      mapType: MapType.Standard,
      // 是否显示缩放控件 (可选)
      showZoomControl: true,
      maskDelay: Duration(milliseconds: 500),
      // // 是否显示指南针控件 (可选)
      // showCompass: true,
      // // 是否显示比例尺控件 (可选)
      // showScaleControl: true,
      // // 是否使能缩放手势 (可选)
      // zoomGesturesEnabled: true,
      // // 是否使能滚动手势 (可选)
      // scrollGesturesEnabled: true,
      // // 是否使能旋转手势 (可选)
      // rotateGestureEnabled: true,
      // // 是否使能倾斜手势 (可选)
      // tiltGestureEnabled: true,
      // // 缩放级别 (可选)
      // zoomLevel: 10, 
      // // 中心点坐标 (可选)
      // centerCoordinate: LatLng(39, 116),
      // // 标记 (可选)
      // markers: <MarkerOption>[], 
      // // 标识点击回调 (可选)
      // onMarkerClick: (Marker marker) {},
      // // 地图点击回调 (可选)
      // onMapClick: (LatLng coord) {},
      // // 地图拖动回调 (可选)
      // onMapDrag: (MapDrag drag) {},
      // 地图创建完成回调 (可选)
      onMapCreated: (controller) async {
        _controller = controller;
        // requestPermission是权限请求方法, 需要你自己实现
        // 如果不知道怎么处理, 可以参考example工程的实现, example过程依赖了`permission_handler`插件.
        if (await requestPermission()) {
          await controller.showMyLocation(true);
        }
      },
    );
   }

   Future<bool> requestPermission() async {
    final permissions =
        await PermissionHandler().requestPermissions([PermissionGroup.location]);

    if (permissions[PermissionGroup.location] == PermissionStatus.granted) {
      return true;
    } else {
      G.showToastBottom('需要定位权限!');
      return false;
    }
  }
}

